package com.emit.service;

import com.emit.domain.Menu;
import com.emit.form.MenuForm;
import com.emit.vo.MenuVO;
import com.github.pagehelper.PageSerializable;

import java.util.List;

/**
 * 菜单逻辑接口
 * @author zhangchao
 */
public interface MenuService {


    /**
     * 根据用户ID查询所有菜单
     * @param id 用户ID
     * @return 所有菜单数据
     */
    List<MenuVO> findUserMenusByUserId(Long id);

    /**
     * 分页查询所有菜单
     * @param menuForm 菜单表单数据
     * @return 分页数据
     */
    PageSerializable<MenuVO> findMenus(MenuForm menuForm);

    /**
     * 菜单下拉框
     * @return 菜单数据
     */
    List<Menu> findMenuOptions();

    /**
     * 查询所有菜单信息
     */
    List<Menu> findAllMenus();

    /**
     * 添加菜单
     * @param menuForm 菜单表单数据
     * @return 添加是否成功
     */
    boolean addMenu(MenuForm menuForm);

    /**
     * 同一菜单下名称重复性校验
     */
    Menu checkExistMenu(Menu menu);

    /**
     * 修改菜单
     * @param menuForm 菜单表单
     * @return 更新结果
     */
    boolean updateMenu(MenuForm menuForm);

    /**
     * 删除菜单
     * @param id 菜单ID
     * @return 删除结果
     */
    boolean deleteMenu(Long id);
}
